package com.millstein.tsinglog.service;

import com.millstein.tsinglog.model.dto.role.PermissionAssignDTO;
import com.millstein.tsinglog.model.dto.role.RoleSaveDTO;
import com.millstein.tsinglog.model.pojo.Role;
import com.millstein.tsinglog.model.vo.result.PageResult;

import java.util.List;

public interface RoleService {

    /**
     * 获取所有的角色信息，注意不查超管
     * @return
     */
    List<Role> getAllRoles();

    /**
     * 分页并条件查询角色信息
     * @param currentPage 当前页
     * @param pageSize 每页数据量
     * @param keyword 搜索关键字
     * @return
     */
    PageResult getRoleByPage(Integer currentPage, Integer pageSize, String keyword);

    /**
     * 修改角色的可用状态
     * @param id 角色id
     * @param usable 1可用，0禁用
     * @return
     */
    void changeUsable(Long id, Short usable);

    /**
     * 根据ids批量删除角色信息
     * @param ids
     * @return
     */
    void deleteByIds(List<Long> ids);

    /**
     * 新增角色
     * @param roleSaveDTO
     */
    void insertRole(RoleSaveDTO roleSaveDTO);

    /**
     * 更新角色
     * @param roleSaveDTO
     */
    void updateRole(RoleSaveDTO roleSaveDTO);

    /**
     * 为角色分配权限
     * @param permissionAssignDTO
     */
    void assignPermission(PermissionAssignDTO permissionAssignDTO);
}
